![PyPI Now Supports iOS and Android Wheels for Mobile Python Development](https://cdn.sanity.io/images/cgdhsj6q/production/96416c872705517a6a65ad9646ce3e7caef623a0-1024x1024.webp?w=400&fit=max&auto=format)
Security News
PyPI Now Supports iOS and Android Wheels for Mobile Python Development
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
reactive-graphql
Advanced tools
This project aims to become a complete GraphQL implementation based around [RxJS](https://github.com/ReactiveX/rxjs).
This project aims to become a complete GraphQL implementation based around RxJS.
import React from "react";
import ReactDOM from "react-dom";
import "./styles.css";
import graphql from "reactive-graphql";
import { makeExecutableSchema } from "graphql-tools";
import gql from "graphql-tag";
import { from, interval, of } from "rxjs";
import { map, merge, scan, combineLatest } from "rxjs/operators";
import { componentFromStream } from "@dcos/data-service";
// mocked API clients that return Observables
const oldPosts = from(["my first post", "a second post"]);
const newPosts = interval(3000).pipe(map(v => `Blog Post #${v + 1}`));
const fetchPosts = () =>
oldPosts.pipe(
merge(newPosts),
scan((acc, item) => [...acc, item], [])
);
const votesStore = {};
const fetchVotesForPost = name => of(votesStore[name] || 0);
const schema = makeExecutableSchema({
typeDefs: `
type Post {
id: Int!
title: String!
votes: Int!
}
# the schema allows the following query:
type Query {
posts: [Post]
}
# this schema allows the following mutation:
type Mutation {
upvotePost (
postId: Int!
): Post
}
`,
resolvers: {
Query: {
posts(parent, args, context) {
return fetchPosts().pipe(
map(emittedValue =>
emittedValue.map((value, index) => ({ id: index, title: value }))
)
);
}
},
Post: {
votes(parent, args, context) {
return fetchVotesForPost(parent.title);
}
}
}
});
const query = gql`
query {
posts {
title
votes
}
}
`;
const postStream = graphql(query, schema);
const PostsList = componentFromStream(propsStream =>
propsStream.pipe(
combineLatest(postStream, (props, result) => {
const {
data: { posts }
} = result;
return posts.map(post => (
<div>
<h3>{post.title}</h3>
</div>
));
})
)
);
function App() {
return (
<div className="App">
<PostsList />
</div>
);
}
const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);
The first argument you pass into reactive-graphql
is an executable schema, the second one a parsed GraphQL query. You can pass in the root context as an object as a third parameter.
The implementation will always return an Observable.
If any of the resolvers returns an error the implementation will emit the error on the stream.
Otherwise the data will be wrapped in a { data }
object, like most implementations handle this.
Apache 2.0
FAQs
> GraphQL reactive executor
The npm package reactive-graphql receives a total of 5 weekly downloads. As such, reactive-graphql popularity was classified as not popular.
We found that reactive-graphql demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 13 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.